How Blitz scaled their game coaching app with lower latency and leaner operations היא סטארט-אפ צומחת במהירות המספקת הדרכה אישית למשחקים כגון League of Legends, Valorant ו- Fortnite.הן שואפות לעזור לשחקנים להפוך לאגדות של League of Legends באמצעות תובנות בזמן אמת וניתוח לאחר המשחק. זוהר בעוד שחקנים משחקים, האפליקציה עושה הרבה עבודה.היא מציירת נתוני משחקים חיים, מנתחת אותם במהירות ומשתמשת בהם לצילומי מסך משחקים בזמן אמת בתוספת אימון אישי לאחר המשחק.ההנחיות מבוססות על פעילות המשחק הנוכחית וההיסטורית של כל שחקן, כמו גם נתונים שנאספו על פני מיליארדי משחקים המעורבים מאות מיליוני משתמשים. הודות להכרה הגוברת של הסטטיסטיקות הפופולריות של Blitz והאפליקציית האימון למשחקים, בסיס המשתמשים שלהם גדל בהדרגה דחף את האדריכלות המקורית שלהם המבוססת על Postgres ו- Elixir לגבולותיהם. על מנת לספק זקנות נמוכה, זמינות גבוהה ופיתוח אופקי למשתמשים הגדלים שלהם, הם בסופו של דבר: TL;DR העברה של שירותי backend מ-Elixir ל-Rust. תחליף את Postgres עם ScyllaDB Cloud. הוא הצליח להפחית באופן משמעותי את טביעת הרגל. הורידו את קלאוס ריאק שלהם. החלפת עיבוד זווית עם עיבוד בזמן אמת. תשתית משולבת של למעלה ממאה ליבות של מיקרו-שירותים עד ארבעה n4-Standard-4 Google Cloud Nodes (לדוגמה, דוגמה קטנה של Redis לשימוש ב- Edge Caching) כמו בונוס נוסף, שינויים אלה הסתיימו בהפחתת עלויות התשתית של Blitz והפחתת עומס הנתונים על צוות ההנדסה שלהם. רקע Blitz כפי שהסביר נאוויד חאן (ראש ההנדסה ב-Blitz), "אנו אוספים הרבה נתונים מפרסמים משחקים ובמהלך המשחק.לדוגמה, אם אתה משחק בליגה של אגדות, אנו משתמשים ב-API של Riot כדי למשוך נתוני תחרות, ואם אתה מתקין את האפליקציה שלנו, אנחנו גם מעקבים את המשחק בזמן אמת. תגית: Postgres חלק מפתח במערכת של Blitz הוא API Playstyles, שמנתח נתונים מראש למשחק עבור חברי הקבוצה וגם עבור היריבים. תהליך אינטנסיבי זה מעריך עד 20 משחקים לכל שחקן והוא פועל תשעה פעמים בנפרד לכל משחק (פעם אחת עבור כל שחקן במשחק). הצוות מחדש אסטרטגית ומשלב מספר microservices כדי לשפר את הביצועים. אבל נפח הנתונים נשאר אינטנסיבי. הם השתמשו במקור ב-Postgres, אשר שימש אותם מוקדם מאוד. עם זאת, כאשר עומסי העבודה הקשים שלהם גדלו, המורכבות המבצעית והעלויות ב-Google Cloud גדלו באופן משמעותי. יתר על כן, הגדלת Postgres הפכה למורכבת למדי. נוויד סיפר, "ניסינו כל מיני דברים כדי לגדול. נבנו שירותים מרובים סביב Postgres כדי להשיג את הגודל הדרוש לנו: קבוצת Redis, קבוצת Riak, וקווים של Elixir Oban שהזדקנו מדי פעם. ניהול הקווים הפך למשימה גדולה." כמו סטארט-אפים גדל, הם לעתים קרובות לעבור מ "רק להשתמש Postgres" ל "רק להשתמש NoSQL." מתאים, הצוות של Blitz החליט לעבור MongoDB, אבל בסופו של דבר הסיר את זה. "הייתה לנו הרבה ניסיון MongoDB בקבוצה, וחלק מאיתנו באמת אהבו את זה. זה היה יוצר מחסום עבור עומס העבודה הספציפי שלהם ואת הצמיחה הצפויה. ארכיטקטורה ראשונית-שנייה של MongoDB לאחר מכן החליטו להתקדם עם RocksDB בגלל השיקולים הנמוכים והעלויות שלה.בדיקות הראו כי זה יעמוד בדרישות השיקולים שלהם, ולכן ביצעו את (re)modeling הנתונים הנדרשים והעבירו כמה משחקים קטנים יותר מ- Postgres ל- RocksDB.עם זאת, בסופו של דבר הם החליטו נגד RocksDB בשל חששות של גודל וזמינות גבוהה. למה ScyllaDB אחד מההנדסים האחוריים שלהם הציע את ScyllaDB, אז הם הגיעו וניהלו הוכחה של רעיון. הם בדקו את זה על החומרה שלהם תחילה, ולאחר מכן עברו ל- ScyllaDB Cloud. לפי Naveed, "המחיר היה די קרוב ל-self-hosting, ואנחנו קיבלנו ניהול מלא בחינם, אז זה היה לא-brainer. במונחים של ביצועים, השינוי פגש את מטרתם להעלות את חוויית המשתמש ... וגם הפשטה את החיים עבור צוותי ההנדסה שלהם. בריאן הוסיף: "ScyllaDB הוכיח את עצמו כעוצמתי, ומספק ביצועים חזקים עם יכולת לחסוך לאחר אופטימיזציה. המוצר של הליגה שלנו עולה בסביבות 5k ops/sec עם דיווח הקלאסטר מתחת ל-20% של עומס. המגבלת הגדולה ביותר שלנו הייתה השימוש בדיסק, ששימשנו עדכוני מספר רב כדי להקל על כך. המערכת החדשה יכולה לעתים קרובות להחזיר תוצאות באופן מיידי במקום להסתמך על נתונים מאוחסנים, לספק מידע מעודכן יותר על שחקנים אחרים ואפילו לזהות שותפים קבועים High-Level Architecture of Blitz Server with Rust and ScyllaDB כתוב מחדש את Elixir Services ל-Rust כחלק מהשינוי הגדול, הצוות של Blitz החל לחשוב מחדש על כל התשתית שלהם – מעבר לשינוי המתואר בעבר מ-Postgres ל-ScyllaDB בעלת ביצועים גבוהים ומפוזרים. לצד העברת מסד נתונים זו, הם גם בחרו להוריד את השירותים שלהם המבוססים על Elixir לטובת שפה מודרנית יותר. כעת, כאשר החבילה הראשונה של שירותי Rust מחדש הם בייצור, Naveed והצוות לא מסתכלים אחורה: "Rust הוא פנטסטי. זה מהיר, והמחבר מכריח אותך לכתוב קוד מאובטח זיכרון מראש במקום להתמודד עם בעיות איסוף זבל מאוחר יותר.